package constants;

/**
 * @author christopher
 * This Enum will serve as a central point of reference to the various
 * events used in the application. All of the events listed here are
 * implemented and should be used when possible unless otherwise stated.
 */

public enum Events {
	
	/**
	 * A new game starts
	 */
	NEWGAME,         
	
	/**
	 * The die is thrown
	 */
	DICETHROW,
	
	/**
	 * Should be published after DICETHROW so that the view can do appropriate animations
	 */
	DICETHROWUPDATE,
	
	/**
	 * A player moves one of his pieces 
	 */
	MOVE, 
	
	/**
	 * Saves the game 
	 */
	SAVE_GAME,
	
	/**
	 * Loads a game
	 */
	LOAD_GAME,
	
	/**
	 * Publish this together with any message (to be displayed on screen for example).
	 */
	ERROR,
	
	/**
	 * Changes a player's name
	 */
	PLAYERNAME,
	
	/**
	 * Should be published each time any event occurs (this will make the view update itself)
	 */
	UPDATE,
	
	/**
	 * The rules change. (Unused at this time, issue44).
	 */
	CHANGE_RULES,
	
	/**
	 * The turn timer ticks (Normally published once every second)
	 */
	TIME,
	
	/**
	 * A battle breaks out between two Players
	 */
	BATTLE,
	
	/**
	 * Toggles music ON/OFF (Currently unused)
	 */
	MUSIC,
	
	/**
	 * Toggles sfx ON/OFF
	 */
	SFX,
	
	/**
	 * A player has won
	 */
	WIN,
	
	/**
	 * The game ends
	 */
	END_GAME
}